// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// Author: wsfuyibing <682805@qq.com>
// Date: 2024-11-28

package name

import "strings"

var (
    builtinNotificationTopic      = TopicName("notification")
    builtinFailedNotificationTag  = TopicTag("failed")
    builtinSucceedNotificationTag = TopicTag("succeed")

    undefinedBinding  = BindingName("")
    undefinedQueue    = QueueName("")
    undefinedTopic    = TopicName("")
    undefinedTopicTag = TopicTag("")
)

// TopicName
// is type for topic.
type TopicName string

// IsNotification
// return true if topic for notification messages.
func (o TopicName) IsNotification() bool {
    return o == builtinNotificationTopic
}

// String
// return topic name.
func (o TopicName) String() string {
    return string(o)
}

// ToLower
// convert topic name as lower-case string.
func (o TopicName) ToLower() string {
    return strings.ToLower(o.String())
}

// ToUpper
// convert topic name as upper-case string.
func (o TopicName) ToUpper() string {
    return strings.ToUpper(o.String())
}

func (o TopicName) Undefined() bool {
    return o == undefinedTopic
}
